/*
	This file is part of AVRCppLib.

    AVRCppLib is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    AVRCppLib is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with AVRCppLib.  If not, see <http://www.gnu.org/licenses/>.

    Copyright (C) Maxime Lemonnier 2007-2011
 */

#include "SerializableSample.h"

SerializableSample::SerializableSample(char label, uint16_t sample) :
label(label), sample(sample), buffer(sizeof(label) + sizeof(sample) + sizeof(checksum), &label)
{
	// TODO Auto-generated constructor stub

}

SerializableSample::SerializableSample(const SerializableSample & rhs) :
label(rhs.label), sample(rhs.sample), buffer(sizeof(label) + sizeof(sample) + sizeof(checksum), &label)
{
}

SerializableSample::~SerializableSample()
{
	// TODO Auto-generated destructor stub
}

void SerializableSample::updateValues(char label, uint16_t sample)
{
	this->label = label;
	this->sample = sample;
}

Buffer<char> & SerializableSample::serialize()
{
	buffer.buffer = &label;

    checksum = computeChecksum<char,uint8_t>(buffer.buffer, buffer.numberOfElements - sizeof (checksum));

    return buffer;
}

size_t SerializableSample::serializedSize()
{
	return buffer.numberOfElements;
}
